package cn.terminus.data.customer.custominfo.dao;

import cn.terminus.common.customer.bean.analysis.CustomerAnalysisDto;
import cn.terminus.common.customer.bean.analysis.CustomerStageNumResultDto;
import cn.terminus.common.customer.bean.analysis.CustomerNatureIndustryNumResultDto;
import cn.terminus.common.customer.bean.analysis.CustomerStageDto;
import cn.terminus.common.customer.bean.custominfo.dto.*;

import java.util.List;

/**
 * (CustomInfo)表服务接口
 *
 * @author makejava
 * @since 2021-07-08 11:18:49
 */
public interface CustomInfoDao {

    /**
     * 新增
     *
     * @param dto
     * @return
     */
    Integer add(CustomInfoNewDto dto);

    /**
     * 更新
     *
     * @param dto
     * @return
     */
    Integer update(CustomInfoNewDto dto);


    /**
     * 查看详情
     *
     * @param dto
     * @return
     */
    CustomInfoResultDto getDetail(CustomInfoGetsDto dto);

    /**
     * 逻辑删除
     *
     * @param dto
     * @return
     */
    Integer delete(CustomInfoDeleteDto dto);

    /**
     * 查询
     *
     * @param dto
     * @return
     */
    List<CustomInfoResultDto> query(CustomInfoQueryDto dto);


    Integer belongTo(CustomBelongtoDto customBelongtoDto);

    List<GetCustomInfoByNameResultDto> getNameListByName(GetCustomInfoByNameDto dto);

    List<CustomInfoQueryNameResultDto> queryByIds(List<Long> customerIdList);

    GetCustomInfoByNameResultDto getDetailById(Long customerId);

    List<ChannelCustomerNumberResultDto> getChannelCustomerNumber(CustomerChannelUserDto dto);

    Integer queryByCustomName(CustomInfoGetsDto dto);

    List<CustomerStageNumResultDto> analysisCustomerStage(CustomerAnalysisDto dto);

    List<CustomerNatureIndustryNumResultDto> analysisNature(CustomerStageDto dto);

    List<CustomerNatureIndustryNumResultDto> analysisIndustry(CustomerStageDto dto);

    List<CustomInfoBaseDto> getBaseCustomerInfoByIds(List<Long> ids);

    void changeCustomerChannel(CustomerChannelUserDto dto);
}

